package com.yboot.starter.common.core.utils;

import cn.hutool.core.collection.CollUtil;
import lombok.experimental.UtilityClass;

import java.util.Collection;

@UtilityClass
public class CollectionUtil extends CollUtil {

    /**
     * 分析集合差异，并输出结果
     *
     * @param oldList  集合1
     * @param newList  集合2
     * @param same   输出相同的部分
     * @param delete 集合1 - 集合2
     * @param add    集合2 - 集合1
     * @param <T>    数据类型
     */
    public static <T> void diff(Collection<T> oldList,
                                Collection<T> newList,
                                java.util.function.Consumer<Collection<T>> same,
                                java.util.function.Consumer<Collection<T>> delete,
                                java.util.function.Consumer<Collection<T>> add) {
        // 找出不变的部分
        same.accept(CollUtil.intersection(oldList, newList));

        // 找出被移除的部分
        delete.accept(CollUtil.subtract(oldList, newList));

        // 找出被添加的部分
        add.accept(CollUtil.subtract(newList, oldList));

    }


}
